$(document).ready(function () {

    var amount_limit = 1000;		
	var interval_promptpay_time = null;
	var checkbtn = null;

    $(document).on('input', 'input[name="amount"]', function () {

        let amount = $(this).val();

        if (amount < 1) {

            $(this).val(1);

        } else if (amount > amount_limit) {

            $(this).val(amount_limit);

        }

        $.fn.order_summary();

    });

    $(document).on('click', '.minus-amount', function () {

        let input_amount = $('input[name="amount"]');
        let amount = parseInt(input_amount.val());

        if (amount > 1) {

            input_amount.val(amount - 1);

        }

        $.fn.order_summary();

    });

    $(document).on('click', '.plus-amount', function () {

        let input_amount = $('input[name="amount"]');
        let amount = parseInt(input_amount.val());

        if (amount < amount_limit) {

            input_amount.val(amount + 1);

        }

        $.fn.order_summary();

    });

    $(document).on('change', 'input[name="product"]', function () {

        let product_checked = $(this);
        let product_title = product_checked.parent().find('.product-check .title').html();
        let product_amount = parseInt(product_checked.data('amount'));
        if(product_amount < 100){
            amount_limit = product_amount;
        }else{
            amount_limit = 100;
        }

        let input_amount = $('input[name="amount"]');
        let amount = parseInt(input_amount.val());
        if(amount > amount_limit){
            input_amount.val(amount_limit);
        }

        $('.product').html(product_title);
        $('.product-amount').html(product_amount);

        $.fn.order_summary();

    });

    $.fn.order_summary = function () {

        let product_checked = $('input[name="product"]:checked');

        if (product_checked.length > 0) {

            let product_price = parseInt(product_checked.data('price'));
            let product_price_dis = parseInt(product_checked.data('dis'));
            let product_msg = product_checked.data('msg');
            var textInfo = document.getElementById("text-info");
            textInfo.innerHTML = product_msg;
			let product_give = product_checked.data('give');
            var textgive = document.getElementById("text-give");
            textgive.innerHTML = product_give;
            let input_amount = $('input[name="amount"]');
            let amount = parseInt(input_amount.val());
            let total_pay = product_price * amount;
			let product = parseInt(product_checked.val());
			let email = $('input[name="email"]');
			console.log(product);
			if (product == 102){
            $('.email').removeClass('d-none');
			$('.amounts').addClass('d-none');
			email.val('');
			}else{
			$('.email').addClass('d-none');
			email.val('Null');
			};
            $('.order-amount').text(amount);
            $('.total-pay').text($.fn.addCommas(total_pay));
            $('.total-price').text($.fn.addCommas(product_price));
            $('.total-amount').text($.fn.addCommas(amount));
            //$('.total-dis').text($.fn.addCommas("-"+product_price_dis));

        }
    }

    $(document).on('click', '#purchase', async function () {

        let btn_load = $(this);
        let frm_card = $('#frm_card');
        let rs_validate = await $.fn.validate_form_card(frm_card);
        if (rs_validate.check == 0) {

            $.fn.btn_loading(btn_load);
            $.fn.btn_loaded(btn_load);

            $('.step').addClass('d-none');
            $('.step-order-confirm').removeClass('d-none');

            $('html, body').animate({
                scrollTop: $(".product-terms-of-service").offset().top - 100
            }, 0);

        } else {

            $('.step-purchase .frm-feedback').html($.fn.frm_error('กรุณาใส่ข้อมูลให้ถูกต้องและครบถ้วน')).addClass('mb-3');

        }

    });

    $(document).on('click', '#order-confirm', async function () {

        let btn_load = $(this);
        let frm_card = $('#frm_card');

        let rs_validate = await $.fn.validate_form_card(frm_card);
        
        // ตรวจสอบการยอมรับเงื่อนไขการให้บริการ
        if (!$('#accept_terms').is(':checked')) {
            $('.step-order-confirm .frm-feedback').html($.fn.frm_error('ท่านต้องกดยอมรับเงื่อนไขการให้บริการก่อนยืนยันการสั่งซื้อ')).addClass('mb-3');
        } else if (rs_validate.check == 0) {

            $.fn.btn_loading(btn_load);

            let formData = new FormData(frm_card[0]);

            formData.append(csrf_name, csrf_hash);

            $.ajax({
                type: "POST",
                url: "/api/v2/buyapps",
                dataType: 'json',
                data: formData,
                contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
                processData: false, // NEEDED, DON'T OMIT THIS
                success: function (rs) {

                    $.fn.btn_loaded(btn_load);

                    if (rs.status == "success") {

                        $('body').append(rs.modal_order_confirmed);
                        $('#modal_order_confirmed').modal('show');

                    } else if (rs.status == 3) {

                        $.fn.modal_confirm({
                            html: '<div class="text-center fs-5">' + rs.msg + '</div>',
                            confirmButtonText: 'ตกลง',
                            showCancelButton: false,
                            backdropStatic: false,
                        }, function (result_confirm) {

                            window.location.href = '/signin';

                        });

                    }else if (rs.status == 101) {

						localStorage.setItem('base64', rs.lock);

						$('body').append(rs.html_promptpay_detail_pay);

						let promptpay_time_out = rs.promptpay_time_out;

						if (promptpay_time_out > 0) {
   

							clearInterval(interval_promptpay_time);

							interval_promptpay_time = setInterval(function () {

								let timer = promptpay_time_out;

								let minutes = Math.floor(timer / 60);
								let seconds = timer - (minutes * 60);

								if (minutes <= 0 && seconds <= 0) {
									clearInterval(interval_promptpay_time);
									window.location.reload();
								}

								--seconds;
								minutes = (seconds < 0) ? --minutes : minutes;
								minutes = (minutes < 10) ? '0' + minutes : minutes;

								seconds = (seconds < 0) ? 59 : seconds;
								seconds = (seconds < 10) ? '0' + seconds : seconds;

								if (promptpay_time_out > 0) {
									$('#modal_promptpay .promptpay-countdown').html(minutes + ':' + seconds);
								}

								promptpay_time_out = (parseInt(minutes) * 60) + parseInt(seconds);



							}, 1000);

						} else {
							window.location.reload();
						}

						$('#modal_promptpay').modal('show');
                    }  else {

                        $('.step-order-confirm .frm-feedback').html($.fn.frm_error(rs.msg)).addClass('mb-3');

                    }

                },
                error: function () {

                    $.fn.btn_loaded(btn_load);

                    $('.step-order-confirm .frm-feedback').html($.fn.frm_error("เกิดข้อผิดพลาด ไม่สามารถใช้งานได้ในขณะนี้")).addClass('mb-3');

                }
            });

        } else {

            $('.step-order-confirm .frm-feedback').html($.fn.frm_error('กรุณาใส่ข้อมูลให้ถูกต้องและครบถ้วน')).addClass('mb-3');

        }

    });

    $.fn.validate_form_card = async function (form) {

        let check = 0;
        let validate_focus = null;
        let validate_array = [];

        form.find('.frm-feedback').html('').removeClass('mb-3');
        form.find('.invalid-feedback').remove();
        form.find('.validate').css('border', '');

        form.find('.validate').each(function () {
            validate_array.push($(this));
        });

        // เพื่อการตรวจสอบที่เรียงลำดับกัน

        for (const loop_await of validate_array) {

            if (loop_await.attr('validate-type') == "product") {

                if (!$('input[name="product"]').is(':checked')) {
                    loop_await.after('<div class="invalid-feedback d-block">' + loop_await.attr('valid-feedback') + '</div>');
                    check++;
                }

            } else if (loop_await.attr('validate-type') == "amount") {

                let amount = parseInt(loop_await.val());

				if (amount < 1) {
                    
					loop_await.css('border', '2px solid red');
					loop_await.parents('.input-group').after('<div class="invalid-feedback d-block">' + loop_await.attr('valid-feedback') + '</div>');
					check++;

				}else if (amount > 100){

                    loop_await.css('border', '2px solid red');
					loop_await.parents('.input-group').after('<div class="invalid-feedback d-block">' + loop_await.attr('valid-feedback-2') + '</div>');
					check++;

                }
			} else {

                // ประเภทการตรวจสอบแบบปกติ

                if (loop_await.val().trim() == '') {
                    loop_await.css('border', '2px solid red');
                    loop_await.after('<div class="invalid-feedback d-block">' + loop_await.attr('valid-feedback') + '</div>');
                    check++;
                }
            }

            // Focus Input
            if (!validate_focus && check > 0) {
                validate_focus = loop_await;
            }

        }

        if (validate_focus) {
            validate_focus.focus();
        }

        let data_return = {
            check: check
        };

        return data_return;
    }

    $(document).on('click', '.btn-step-purchase', function () {

        $('.step').addClass('d-none');
        $('.step-purchase').removeClass('d-none');

    });

    $(document).on('hidden.bs.modal', '#modal_order_confirmed', function () {
        $(this).remove();
        window.location.reload();
    });



	$(document).on('click', '#confirm_promptpay', async function () {
		checkbtn++;
        let frm_card = $('#frm_card');
        let base64 = localStorage.getItem('base64');
		let btn_load = $(this);
		$.fn.btn_loading(btn_load);

        let formData = new FormData(frm_card[0]);
		formData.append("base64", base64);
		formData.append(csrf_name, csrf_hash);


		$.ajax({
			type: "POST",
			url: "/api/v2/topup_cf",
			dataType: 'json',
			data: formData,
			contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
			processData: false, // NEEDED, DON'T OMIT THIS
			success: function (rs) {

				if (rs.status == 'success') {

                    formData.append(csrf_name, rs.csrf_hash);

                    $.ajax({
                        type: "POST",
                        url: "/api/v2/buyapps",
                        dataType: 'json',
                        data: formData,
                        contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
                        processData: false, // NEEDED, DON'T OMIT THIS
                        success: function (rs) {
							
							$.fn.btn_loaded(btn_load);
							$('#modal_promptpay').modal('hide');
        
        
                            if (rs.status == "success") {
        
                                $('body').append(rs.modal_order_confirmed);
                                $('#modal_order_confirmed').modal('show');
        
                            }  else {

                                $('.step-order-confirm .frm-feedback').html($.fn.frm_error(rs.msg)).addClass('mb-3');
        
                            }
                        }
                    });

				} else if (rs.status == 3) {

					$('#modal_promptpay').modal('hide');

					$.fn.modal_confirm({
						html: '<div class="text-center">' + rs.msg + '</div>',
						confirmButtonText: 'ตกลง',
						showCancelButton: false,
						backdropStatic: false,
					}, function (result_confirm) {

						window.location.href = '/signin';

					});

				} else {
					$.fn.btn_loaded(btn_load);

					$.fn.btn_loaded(btn_load);
					$('#modal_promptpay .frm-feedback').html($.fn.frm_error("เกิดข้อผิดพลาด ไม่พบยอดโอนกรุณาลองใหม่อีกครั้ง"));
					$("#exit").html("<i class='fas fa-file-alt'></i> แนบสลิป ").attr("id", "topupsp1").addClass("topupsp");
					$("#confirm_promptpay").html("<i class='fas fa-undo'></i> ลองใหม่อีกครั้ง");
					if (checkbtn > 2){
						$('#modal_promptpay .frm-feedback').html($.fn.frm_error("กรุณาแนบสลิปโอนเงิน ระบบตรวจสอบ 1 - 3 นาที "));
						$("#confirm_promptpay").html("<i class='fas fa-file-alt'></i> แจ้งโอนระบบแนบสลิปโอนเงิน ").attr("id", "topupsp2").addClass("topupsp");	
						$("#topupsp1").hide();
					}
						
					$(".topupsp").click(function() {
					window.location.href = '/topupsp';
					});

				}

			},
			error: function () {

				$.fn.btn_loaded(btn_load);

					$.fn.btn_loaded(btn_load);
					$('#modal_promptpay .frm-feedback').html($.fn.frm_error("เกิดข้อผิดพลาด ไม่พบยอดโอนกรุณาลองใหม่อีกครั้ง"));
					$("#exit").html("<i class='fas fa-file-alt'></i> แนบสลิป ").attr("id", "topupsp1").addClass("topupsp");
					$("#confirm_promptpay").html("<i class='fas fa-undo'></i> ลองใหม่อีกครั้ง");
					if (checkbtn > 2){
						$('#modal_promptpay .frm-feedback').html($.fn.frm_error("กรุณาแนบสลิปโอนเงิน ระบบตรวจสอบ 1 - 3 นาที "));
						$("#confirm_promptpay").html("<i class='fas fa-file-alt'></i> แจ้งโอนระบบแนบสลิปโอนเงิน ").attr("id", "topupsp2").addClass("topupsp");	
						$("#topupsp1").hide();
					}
						
					$(".topupsp").click(function() {
					window.location.href = '/topupsp';
					});

			}
		});

	});


$(document).on('click', '#exit', async function () {
    setTimeout(function () {
        window.location.reload();
    }, 500); // 5000 มีค่าเป็นหน่วยมิลลิวินาที (5 วินาที)
});
	


});